package com.cskaoyan.javase.basic._3variable._4precision;

/**
 * @description:
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 浮点数为什么有精度问题:
 *      1.浮点数的表示有尾数(有效数字)的限制,不能表示很长的数
 *      2.小数在表示时可能出现循环的情况
 * 在十进制下,十除以三得到的就是一个无限循环小数,同样的,在二进制下,也会出现类似的情况
 *      比如用二进制表示小数0.1
 *      0.1 ---> 0.1 * 2 = 0.2 取整数位0
 *      0.2 * 2 = 0.4 取整数位 0
 *      0.4 * 2 = 0.8 取整数位 0
 *      0.8 * 2 = 1.6 取整数位 1
 *      0.6 * 2 = 1.2 取整数位 1
 *      0.2 * 2 = 0.4 取整数位 0
 *      0.4 * 2 = 0.8 取整数位 0
 *      ...
 *      上述过程一直无限循环,所以用二进制表示十进制的小数0.1是表示不出来的
 *
 * 什么是精度问题？
 * 计算的结果的数据类型，或者新的数据类型无法容纳全部的数据，导致部分信息被截断丢失，数据失真
 * 专业名词就叫做“精度丢失”
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        double a = 1;
        double b = 0.9;
        System.out.println(a - b);

        float c = 1F;
        float d = 0.9F;
        System.out.println(c - d);
    }
}
